package cn.leaf.calculator.resolver;

import cn.leaf.calculator.bean.ParameterBeanDefinition;
import lombok.NonNull;

import java.io.Serializable;
import java.util.Map;

/**
 * 公式解析器
 *
 * @author 李克国
 * @version 1.0.0

 */
public interface FormulaBeanDefinitionResolver<T> {

    /**
     * 解析
     *
     * @param formulaString 公式字符串
     * @return param list
     */
    Map<Serializable, ParameterBeanDefinition<T>> resolve(@NonNull String formulaString);

    /**
     * 刷新
     */
    void refresh();

    /**
     * 合法性 ：返回公式是否合法
     *
     * @return boolean
     */
    boolean validate();
}
